<?php

namespace app\task\cron\movie;

use yunwuxin\cron\Task;
use app\admin\model\order\Movie;
use think\facade\Db;

/**
 * 影票出票成功佣金结算.
 */
class SettleOrder extends Task
{
    /**
     * 5分钟执行1次
     */
    protected function configure()
    {
//        // 分 时 日 月 周
//        $this->expression = '*/5 * * * *';
        // 分 时 日 月 周
        $this->expression = '* * * * *';
    }

    /**
     * 执行指令.
     */
    protected function handle()
    {
        echo '影票出票成功佣金结算--'.PHP_EOL;
        $lockKey = 'movie_order_auto_settle_lock_key';
        $lockVal = cache($lockKey);
        if ($lockVal) {
            echo '还在处理呢'.PHP_EOL;

            return true;
        }

        cache($lockKey, 1, 120);

        $list = Db::name('movie_order')
            ->where('settle_status', 2)
            ->where('supplier_status', 5)
            ->limit(30)
            ->select()
            ->toArray();

        $done = 0;
        $model = new Movie();
        foreach ($list as $order) {
            $res = $model->settle($order);
            if (false === $res) {
                echo $order['id'].'--'.$model->getError().PHP_EOL;
            } else {
                ++$done;
            }
        }

        cache($lockKey, null);

        echo '影票出票成功佣金结算：成功结算 '.$done.' 单'.PHP_EOL;
    }
}
